from pymysql import Connect
import pandas as pd
from sqlalchemy import create_engine
# 读取数据库函数
def mysql_sql_df(x):
    conn=Connect(host='localhost',port=3306,user='root', password='123456', database='sakila', charset='utf8')
    # 准备sql
    sql=f"select * from {x}"
    # 读取数据
    df=pd.read_sql(sql,conn)
    # 关闭数据库链接
    conn.close()
    return df

# 写入数据库函数
def mysql_to_sql(x,y):
    try:
        # 连接数据库准备
        engine = create_engine("mysql+pymysql://root:123456@localhost:3306/sakila_dwh_2?charset=utf8")
        # 写入数据库 name写输出的表名，con填服务器信息，schema填数据库名字，if_exists判断表不存在事是否重新建新表，fail是
        # DataFrame.to_sql(name, con, schema=if_exists =)
        # name: sql表（string字符型）
        # con: SQLAlchemy数据库引擎 or DBAPI2数据库连接
        # if_exists: {‘fail’, ‘replace’, ‘append’}, 默认情况： ‘fail’
        # fail: 如果表存在，则不保存数据。
        # replace: 如果表存在，则删除该表。然后，重新创建新表并插入数据。
        # append: 如果表存在，则插入数据。如果表不存在，创建新表并插入数据。

        x.to_sql(name=f'{y}', con=engine, schema='sakila_dwh_2', if_exists='replace')
    except:
        print(f"{y}写入出现错误，有可能mysql中已经存在dim_staff表")
    else:
        print(f"{y}写入成功")
    pass
